﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

#pragma once

#include "ISnap.h"

namespace gcmp
{
    /// \brief 捕捉结果
    ///
    /// 捕捉结果类型：组合类型
    class ICombinedSnap : public ISnap
    {
        DEFINE_CAST_DERIVED(gcmp::ICombinedSnap, gcmp::ISnap)
    public:

        /// \brief 判断组合捕捉是否包含子类型
        /// \param subType 捕捉类型
        /// \return 组合捕捉是否包含子类型
        virtual bool HasSubType(SnapType subType) const = 0;

        /// \brief 获取组合捕捉的子捕捉
        /// 
        /// 如果不是组合捕捉则返回空
        /// \return 组合捕捉的子捕捉集合
        virtual std::vector<const ISnap*> GetSubSnaps() const = 0;

        /// \brief 析构函数
        virtual ~ICombinedSnap() {}
    };
}



